/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grafika;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import logika.Hra;
import logika.Prostor;

/**
 *
 * @author xkovt09
 */
public class WastelandMap extends JComponent implements Predplatitel {

    private ImageIcon planek;
    private Hra hra;
    private GUI gui;
    private int poziceX;
    private int poziceY;

    /**
     * konstruktor třídy mapy...vytvoří vlastní komponentu mapa
     * @param hra
     * @param gui
     */
    public WastelandMap(Hra hra, GUI gui) {
        this.hra = hra;
        this.gui = gui;
        URL mapUrl = WastelandMap.class.getResource("/obrazky/mapa.jpg");
        if (mapUrl == null) {
            throw new IllegalStateException("Image not found bitch!!!");
        }
        planek = new ImageIcon(mapUrl);
        this.setPreferredSize(new Dimension(planek.getIconWidth(), planek.getIconHeight()));
        this.addMouseListener(new OvladacMysi());
        
       
    }

    /**
     * metoda vykresluje puntík na mapě
     * @param g
     */
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        planek.paintIcon(this, g, 0, 0);
        g.setColor(Color.red);
        g.fillOval(poziceX, poziceY, 10, 10);

    }


    /**
     * Metoda aktualizuje pozici puntíku na mapě....
     */
    @Override
    public void refresh() {
        Prostor aktProstor = hra.getHerniPlan().getAktualniProstor();
        if (aktProstor.getNazev().equals("Megaton")) {
            poziceX = 64;
            poziceY = 91;
        } else if (aktProstor.getNazev().equals("Wasteland")) {
            poziceX = 167;
            poziceY = 203;
        } else if (aktProstor.getNazev().equals("supermarket")) {
            poziceX = 180;
            poziceY = 123;
        } else if (aktProstor.getNazev().equals("Vez")) {
            poziceX = 332;
            poziceY = 272;
        } else if (aktProstor.getNazev().equals("stanice")) {
            poziceX = 260;
            poziceY = 89;
        } else if (aktProstor.getNazev().equals("sklad")) {
            poziceX = 281;
            poziceY = 82;
        }
        repaint();

    }

    /**
     * Setter pro nastavení parametru hra...slouží při znovu registrování, když
     * začnu novou hru
     *
     * @param hra
     */
    public void setHra(Hra hra) {
        this.hra = hra;
    }
    


    /**
     * Ovladač pro přecházení mezi prostory pomocí klikání na mapu...
     */
    private class OvladacMysi implements MouseListener {

        @Override
        public void mouseClicked(MouseEvent e) {
            int mysX = e.getX();
            int mysY = e.getY();
         if (hra.konecHry()!=true){
            if (mysX >= 323 && mysX < 323 + 30 && mysY >= 264 && mysY < 264 + 30) {
                gui.provedPrikaz("jdi Vez");
            }
            if (mysX >= 80 && mysX < 80 + 200 && mysY >= 164 && mysY < 164 + 200) {
                gui.provedPrikaz("jdi Wasteland");
            }
            if (mysX >= 174 && mysX < 174 + 30 && mysY >= 116 && mysY < 116 + 30) {
                gui.provedPrikaz("jdi supermarket");
            }
            if (mysX >= 57 && mysX < 57 + 30 && mysY >= 84 && mysY < 84 + 30) {
                gui.provedPrikaz("jdi Megaton");
            }
            if (mysX >= 249 && mysX < 249 + 30 && mysY >= 80 && mysY < 80 + 30) {
                gui.provedPrikaz("jdi stanice");
            }
            if (mysX >= 268 && mysX < 268 + 30 && mysY >= 73 && mysY < 73 + 30) {
                gui.provedPrikaz("jdi sklad");
            }
            System.out.println("mouseClicked, X: " + mysX + "y: " + mysY);
            }
         else {
                
         }
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }
    }
}
